package cn.edu.suda.ada.database.connection;

import cn.edu.suda.ada.common.config.Config;
import cn.edu.suda.ada.common.config.DefaultConfig;
import cn.edu.suda.ada.common.config.DefaultConfig.ConfigType;
import cn.edu.suda.ada.database.exception.DatabaseException;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

/**
 * 数据库配置信息
 * <P>
 * 对于不同地址的配置文件，系统利用单例模式对偏好配置进行相应的缓存，避免配置信息的重复加载。
 * 
 * @author JiangJun
 *
 */
public class DbProperties {
	/**
	 * 日志
	 */
	protected static Logger logger = LogManager.getLogger("edu.suda.ada.database");

	private DbProperties() {}
	
	/**
	 * 获得指定数据库偏好配置
	 * 
	 * @param path 数据库配置文件地址
	 * @return 偏好配置实例
	 * @throws DatabaseException 无法获取配置文件
	 */
	public static Config getConfig(String path) throws DatabaseException {
		if (null == path) path = getDefaultPath();
		return DefaultConfig.getConfig(ConfigType.PROPERTIES, path);
	}
	
	/**
	 * 获得默认数据库偏好配置
	 * 
	 * @return 默认偏好配置实例
	 * @throws DatabaseException 无法获取配置文件
	 */
	public static Config getProperties() throws DatabaseException {
		// 默认配置文件信息
		return getConfig(null);
	}
	
	/**
	 * 获得默认数据库偏好配置文件地址
	 * 
	 * @return 偏好配置文件地址
	 */
	public static String getDefaultPath() {
		return "/db.properties";
	}
}